//################################################################################
// MIT License
// Copyright (c) 2024 ZhangYihua
//
// Change Logs:
// Date           Author       Notes
// 2020-04-14     ZhangYihua   first version
//
// Description  : convert binary number to onehot number
//################################################################################

module bin2onehot #(
parameter           OH_BW                   = 8,            // bit width of one-hot number

// the following parameters are calculated automatically
parameter           BIN_BW                  = $clog2(OH_BW) // bit width of binary number
) ( 
input               [BIN_BW-1:0]            bin,            // binary number
output              [OH_BW-1:0]             oh              // one-hot number
);

//################################################################################
// define local varialbe and localparam
//################################################################################
reg                 [OH_BW-1:0]             oh_o;

//################################################################################
// main
//################################################################################

always@(*) begin:OH
    integer         i;

    for (i=0; i<OH_BW; i=i+1) begin
         if (bin==$unsigned(i))
             oh_o[i] = 1'b1;
         else
             oh_o[i] = 1'b0;
    end
end
assign oh = oh_o;

endmodule
